#pragma once
#include "IPhysicsSystem.h"
#include "NxPhysics.h"

namespace Physics{
	class PhysicsSystemPhysX : public IPhysicsSystem{
	public:
		PhysicsSystemPhysX();
		~PhysicsSystemPhysX();
	
		void step(float step);
		std::vector<int> rayCast(int sceneId, Utility::Math::Vector<> &from,Utility::Math::Vector<> &dir);

	protected:
		void initialize();
		void update();

	private:
		NxPhysicsSDK *m_physicsSDK;

		std::map<unsigned int,std::pair<unsigned int,NxActiveTransform*>> m_transforms;
		std::map<unsigned int,NxScene*> m_scenes;
	};
}